]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Factor out linear position calculation
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Wed, 23 Sep 2020 19:48:43 +0000 (16:48 -0300)
committerFlorian Müllner <florian.muellner@gmail.com>
Mon, 5 Oct 2020 12:06:47 +0000 (12:06 +0000)
When adding an item to the app grid, the item is added to
a sorted array. This is calculated by adding all visible
items in pages before the one being modified. Future commits
will need this to move items without reparenting them, so
factor this code into a separate function.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1447

js/ui/appDisplay.js

index f9e6a9b7da4e8c63709c60ee1308cd87d733dd92..9094fcf0388a1deab89004bbd2f34b1819337d8c 100644 (file)
@@ -514,15 +514,10 @@ var BaseAppView = GObject.registerClass({
         return -1;
     }
 
-    _addItem(item, page, position) {
+    _getLinearPosition(page, position) {
         let itemIndex = 0;
 
         if (this._grid.nPages > 0) {
-            // Append icons to the first page with empty slot, starting from
-            // the second page
-            if (this._grid.nPages > 1 && page === -1 && position === -1)
-                page = this._findBestPageToAppend();
-
             const realPage = page === -1 ? this._grid.nPages - 1 : page;
 
             itemIndex = position === -1
@@ -535,6 +530,17 @@ var BaseAppView = GObject.registerClass({
             }
         }
 
+        return itemIndex;
+    }
+
+    _addItem(item, page, position) {
+        // Append icons to the first page with empty slot, starting from
+        // the second page
+        if (this._grid.nPages > 1 && page === -1 && position === -1)
+            page = this._findBestPageToAppend();
+
+        const itemIndex = this._getLinearPosition(page, position);
+
         this._orderedItems.splice(itemIndex, 0, item);
         this._items.set(item.id, item);
         this._grid.addItem(item, page, position);